package prototype;

import java.util.Date;

public class Product implements Cloneable{

    private String name;
    private Date time;

    public Product(){ }
    public Product(String name, Date time){
        this.name = name;
        this.time = time;
    }
    //此为浅克隆，当要克隆的对象依赖于另一个对象，则克隆后的对象也依赖于该对象，使得修改克隆出来的对象会对原对象造成影响
//    @Override
//    protected Object clone() throws CloneNotSupportedException {
//        return super.clone();
//    }

    //此为深度克隆，当要克隆的对象依赖于另一个对象时，在克隆过程中会对其所依赖的对象一起进行克隆，
    // 从而使得修改克隆出来的对象不会对原对象造成影响
    @Override
    protected Object clone() throws CloneNotSupportedException {
        Object clone = super.clone();
        Product product = (Product)clone;
        product.time = (Date) this.time.clone();

        return clone;
    }

    @Override
    public String toString() {
        return "Product{" +
                "name='" + name + '\'' +
                ", time=" + time +
                '}';
    }
}
